package javax.microedition.location;
/**
 * The LocationListener represents a listener that receives events associated with a particular LocationProvider. Applications implement this interface and register it with a LocationProvider to obtain regular position updates.
 * When the listener is registered with a LocationProvider with some update period, the implementation shall attempt to provide updates at the defined interval. If it isn't possible to determine the location, e.g. because of the LocationProvider being TEMPORARILY_UNAVAILABLE or OUT_OF_SERVICE or because the update period is too frequent for the location method to provide updates, the implementation can send an update to the listener that contains an 'invalid' Location instance.
 * The implementation shall use best effort to post the location updates at the specified interval, but this timing is not guaranteed to be very exact (i.e. this is not an exact timer facility for an application).
 * The application is responsible for any possible synchronization needed in the listener methods.
 * The listener methods MUST return quickly and should not perform any extensive processing. The method calls are intended as triggers to the application. Application should do any necessary extensive processing in a separate thread and only use these methods to initiate the processing.
 * See Also:LocationProvider, Location
 */
public interface LocationListener{
    /**
     * Called by the LocationProvider to which this listener is registered. This method will be called periodically according to the interval defined when registering the listener to provide updates of the current location.
     */
    public abstract void locationUpdated(javax.microedition.location.LocationProvider provider, javax.microedition.location.Location location);

    /**
     * Called by the LocationProvider to which this listener is registered if the state of the LocationProvider has changed.
     * These provider state changes are delivered to the application as soon as possible after the state of a provider changes. The timing of these events is not related to the period of the location updates.
     * If the application is subscribed to receive periodic location updates, it will continue to receive these regardless of the state of the LocationProvider. If the application wishes to stop receiving location updates for an unavailable provider, it should de-register itself from the provider.
     */
    public abstract void providerStateChanged(javax.microedition.location.LocationProvider provider, int newState);

}
